function Draggable(){
	
}

//Metodo para criar o draggable, pode receber um JSON vazio e usar os elementos default, ou substituir pelos que o usuario passar.
Draggable.prototype.montarDraggable = function(seletor, json) {

	if(!seletor){
		
		return false;
	}
	
	var jsonDefault = {
		 
			axis: "false", //Determina se o campo draggable vai se movimentar na horizontal("x") ou na vertival("y"). -(String)- 
			
			delay: 0, //Determina o tempo em milisegundos que o arrasto vai ocorrer depois que o dragging começar. -(Number)-
			
			disabeld: false, //Determina se o campo vai ficar habilitado ou desabilitado. -(Boolean)-
			
			cursor:"crosshair", //Determina o cursor em css durante o arrasto. -(String)-
			
			containment: false, //Determina o limite em que o campo draggable pode ser arrastado. -(Seletor, Elemento, String, Array)-
			
			distance: 0, //Determina a distancia em pixels que o mouse deve mover para o dragging começar. -(Number)-
			
			grid: [30,30], //Determina o movimento do campo draggable em um grid. -(Array)-
			
			handle: false, //Determina qual elemento especifico dentro do campo draggable que o cursor deve "clicar" para o draggable ocorrer. -(Seletor, Elemento)-
			
			helper: "original", //Determina um elemento de ajuda para usar o dragging. -(String, Function)-
			
			opacity: false, //Determina qual opaco o elemento de dragging vai ficar durante o arrasto. -(Number)-
			
			refreshPositions: false, //Calcula a posição do draggable equanto está sendo arrastado. -(Boolean)-
			
			revert: true, //Determina se o campo draggable vai retornar a sua pisição inicial após o arrasto terminar. -(Boolean, String, Function)-
			
			revertDuration: 800, //Determina o tempo de duração para o campo draggable retornar para a posição inicial. -(Number)-
			
			scroll: false, //Determina se a tela vai gerar scroll durante o arrasto. -(Boolean)-
			
			snap: false, //Determina se o campo draggable vai se agrupar com outros elementos. -(Boolean, Seletor)-
			
			snapMode: "outer", //Determina de qual forma o campo draggable vai ser agrupar aos outros elementos. -(String)-
			
			snapTolerance: 30, //Determina a distancia em pixels entre o campo draggable e o campo a ser agrupado para ocorrer o snap. -(Number)-
			
			stack: false, //Determina em quais elementos o campo draggable vai se sobrepor. -(Seletor)-
			
			zIndex: 10, //Determina a prioridade para campo draggable. -(Number)-
			
			iframeFix: false //Determina se o dragging vai ocorrer quando o mouse passar por um iframe -(Boolean, seletor)-
	};
	
	$.extend(jsonDefault, json);
	

	$(seletor).draggable(jsonDefault);
};

//Metodo que destroi o draggable, impossibilitando de reativa-lo.
Draggable.prototype.destruir = function(seletor){
	
	$(seletor).draggable("destroy");
};

//Metodo para desabilitar o campo de draggable, podendo ser habilitado.
Draggable.prototype.desabilitar = function(seletor){
	
	$(seletor).draggable("disable");
};

//Metodo para habilitar o campo de draggable.
Draggable.prototype.habilitar = function(seletor){
	
	$(seletor).draggable("enable");
};

//Metodo para alterar dinamicamente os elementos do campo draggable.
Draggable.prototype.opcao = function(seletor, json){
	
	$(seletor).draggable("option", json);
};


var dragg = new Draggable();
